// type inference
let str = 'str'
// typescript 会在没有明确指定类型的时候，推断出一个类型，并且类型会确定

// union types
let numberOrString: number| string 
numberOrString = 'abc'
numberOrString = 123

function getLength(input: string | number):number {
    const str = input as string
    if(str.length){
        return str.length
    }
    const number = input as number
    return number.toString().length
}

// type guard 
function getLength2(input: string | number):number {
    if(typeof input === 'string'){
        return input.length
    }else {
        return input.toString().length
    }
}